Egg Linkage

Drag the generating point G to animate the linkage

Locus

A = Point(a_1)
B = Point(a_1)
c_1 = Circle(A, B)
G = Point(c_1)
b_1 = Segment(A, G)
a = 0.86 (slider from 0 to 1, step 0.01)
C' = Dilate(G, a, A)
D = Point(a_1)
d_2 = Circle(D, Segment[A, C'])
e = Line(C', D)
E = Midpoint(C', D)
f = OrthogonalLine(E, e)
A' = Mirror(A, f)
g = Segment(D, A')
h = Segment(A', C')
b = 0.87 (slider from 0 to 1, step 0.01)
A'' = Dilate(A', b, C')
i = Line(A, A'')
F = Midpoint(A, A'')
j = OrthogonalLine(F, i)
C'' = Mirror(C', j)
k = Segment(A'', C'')
l = Segment(A, C'')
c = 0.48 (slider from 0 to 1, step 0.01)
C'''_1 = Dilate(C'', c, A'')
p = Circle(A, Segment[C'', C'''_1])
m = Line(C'''_1, A)
G_1 = Midpoint(A, C'''_1)
n = OrthogonalLine(G_1, m)
C''' = Mirror(C'', n)
q = Segment(A, C''')
r = Line(G, q)
s = Line(C''', b_1)
I = Intersect(r, s)
t = Segment(G, I)
d_1 = Segment(C''', I)
d = 1.36 (slider from 0 to 4, step 0.01)
I' = Dilate(I, d, G)
e_1 = Segment(I, I')
loc1 = Locus(I', G)
o = false
f_1 = Segment(C'''_1, C''')